package com.webflux.dmeo.streamDemo;

import java.util.Random;
import java.util.stream.Stream;

/**
 * Created by wangzhanjin on 2018/5/31.
 * 断点在stream.count()
 * 1.所有操作是链式调用，一个元素只迭代一次
 * 2.每一个中间操作返回一个新的流：流里面有一个熟悉sourceStage执行同一个地方，就是Head
 * 3.然后每个操作里面都有一个nextStage
 */
public class StreamRun {
    public static void main(String[] args) {
        Random random = new Random();
        //随机产生数据
        Stream<Integer> stream = Stream.generate(() -> random.nextInt())
                //产生500个（无限流需要短路操作）
                .limit(500)
                //第1个无状态操作
                .peek(s -> System.out.println("peek:" + s))
                //第2个无状态操作
                .filter(s -> {
                    System.out.println("filter:" + s);
                    return s > 10000;
                })
                //有状态操作，两个输入
                .sorted((i1,i2)->{
                    System.out.println("排序："+i1+","+i2);
                    return i1.compareTo(i2);
                })
                .peek(s->{
                    System.out.println("peek2:"+s);
                });
        //终止操作
        stream.count();
    }
}
